@use '../modules' as *;

colorswatch {
  // This widget is made of two boxes one on top of the other, the lower box is colorswatch {} the other one
  // is colorswatch overlay {}, colorswatch has the programmatically set background, so most of the style is
  // applied to the overlay box.

  &:drop(active), & { border-style: none; } // FIXME: implement a proper drop(active) state

  $_colorswatch_radius: $button_radius;

  // base color corners rounding
  // to avoid the artifacts caused by rounded corner anti-aliasing the base color
  // sports a bigger radius.
  // nth-child is needed by the custom color strip.

  &.top {
    border-top-left-radius: calc($_colorswatch_radius + 0.5px);
    border-top-right-radius: calc($_colorswatch_radius + 0.5px);

    overlay {
      border-top-left-radius: $_colorswatch_radius;
      border-top-right-radius: $_colorswatch_radius;
    }
  }

  &.bottom {
    border-bottom-left-radius: calc($_colorswatch_radius + 0.5px);
    border-bottom-right-radius: calc($_colorswatch_radius + 0.5px);

    overlay {
      border-bottom-left-radius: $_colorswatch_radius;
      border-bottom-right-radius: $_colorswatch_radius;
    }
  }

  &.left,
  &:first-child:not(.top) {
    border-top-left-radius: calc($_colorswatch_radius + 0.5px);
    border-bottom-left-radius: calc($_colorswatch_radius + 0.5px);

    overlay {
      border-top-left-radius: $_colorswatch_radius;
      border-bottom-left-radius: $_colorswatch_radius;
    }
  }

  &.right,
  &:last-child:not(.bottom) {
    border-top-right-radius: calc($_colorswatch_radius + 0.5px);
    border-bottom-right-radius: calc($_colorswatch_radius + 0.5px);

    overlay {
      border-top-right-radius: $_colorswatch_radius;
      border-bottom-right-radius: $_colorswatch_radius;
    }
  }

  &.dark {
    outline-color: transparentize(white, 0.4);

    overlay {
      color: white;

      &:hover { border-color: if($variant == 'light', transparentize(black, 0.2), $borders_color); }
    }
  }

  &.light {
    outline-color: transparentize(black, 0.4);

    overlay {
      color: black;

      &:hover { border-color: if($variant == 'light', transparentize(black, 0.5), $borders_color); }
    }
  }

  &:drop(active) {
    box-shadow: none;

    &.light overlay {
      border-color: $drop_target_color;
      box-shadow: inset 0 0 0 2px if($variant == 'light', gtkshade($drop_target_color, 0.93), $borders_color),
                  inset 0 0 0 1px $drop_target_color;
    }

    &.dark overlay {
      border-color: $drop_target_color;
      box-shadow: inset 0 0 0 2px if($variant == 'light', transparentize(black, 0.7), $borders_color),
                  inset 0 0 0 1px $drop_target_color;
    }
  }

  overlay {
    border: 1px solid if($variant == 'light', transparentize(black, 0.7), $borders_color);

    &:hover {
      box-shadow: inset 0 1px transparentize(white, 0.6),
                  inset 0 -1px transparentize(black, 0.8);
    }
  }

  &#add-color-button {
    border-radius: $_colorswatch_radius $_colorswatch_radius 0 0;

    &:only-child { border-radius: $_colorswatch_radius; }

    overlay {
      @include button(normal);

      &:hover { @include button(hover); }
    }
  }

  &:disabled {
    opacity: $disabled_opacity;

    overlay {
      border-color: transparentize(black, 0.4);
      box-shadow: none;
    }
  }

  row:selected & { box-shadow: 0 0 0 2px $accent_fg_color; }

  &#editor-color-sample {
    border-radius: 4px;

    overlay { border-radius: 4.5px; }
  }
}

// colorscale popup
colorchooser .popover.osd { border-radius: 5px; }
